﻿using System.Collections.Generic;
using System.Threading.Tasks;
using Infrastructure.ExternalService.Core.Requests;
using Infrastructure.ExternalService.Core.Responses;
using Volo.Abp.Application.Services;
using Volo.Abp.DependencyInjection;

namespace Infrastructure.ExternalService.Core.BasicData
{
    public interface IBasicDataClient : IApplicationService, ITransientDependency
    {
        Task<bool> VerifyBuyAndGiveClassRelationAsync(VerifyBuyAndGiveClassRelationRequest request);

        /// <summary>
        /// 获取员工信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<EmployeeResponse> GetEmployeeInfoAsync(GetEmployeeRequest request);

        /// <summary>
        /// 获取订单项协议快照信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<Dictionary<string, string>> GetAgreementSnapshotAsync(CreateAgreementSnapshotRequest request);

        /// <summary>
        /// 添加订单时，根据前端提供的班级Ids获取班级信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<ClassResponse>> GetClassesAsync(GetClassesRequest request);

        /// <summary>
        /// 通过源班级ID获取班级信息
        /// </summary>
        /// <param name="classSourceId"></param>
        /// <returns></returns>
        Task<SingleClassResponse> GetClassBySourceIdAsync(GetSingleClassRequest request);

        Task<int> GetClassPeriodAsync(GetClassPeriodRequest request);

        /// <summary>
        /// 获取手机号归属地
        /// </summary>
        /// <param name="getSchoolByAreaRequest"></param>
        /// <returns></returns>
        Task<MobileResponse> GetMobileAsync(GetMobileAttributeRequest getSchoolByAreaRequest);

        Task<List<CourseInfo>> SearchCourseAsync(SearchClassesRequest request);


        Task<List<DptSchoolInfoResponse>> GetDptSchoolNamesAsync(GetDptSchoolNamesRequest request);

        /// <summary>
        /// 根据商户获取商户下的门店Id
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<BasicSchoolResponse> GetSchoolIdsAsync(GetDBSchoolRequest request);



        /// <summary>
        /// 获取班级信息 【业务类型、提成方式】
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<ClasssInfoResponse>> GetClassInfoAsync(GetClassesRequest request);

    }
}